package com.hz.cheetah.hub.zookeeper;

import com.hz.cheetah.hub.StateListener;
import org.I0Itec.zkclient.IZkChildListener;

import java.util.List;

/**
 * Created by yangchuan on 16/6/20.
 * @since 1.0.0
 */
public interface ZookeeperClient {


    /**
     * 判断节点是否存在
     * @param path
     * @return
     */
    public boolean exists(String path);

    /**
     * 创建持久节点
     * @param path
     */
    public void createPersistent(String path);


    /**
     * 创建临时有序节点
     * @param path
     */
    public String createEphemeralSequential(String path, Object object);
    /**
     * 创建临时无序节点
     * @param path
     */
    public void createEphemeral(String path, Object object);


    /**
     * 连接状态监听器
     * @param listener
     */
    void addStateListener(StateListener listener);

    /**
     * 删除连接状态监听
     * @param listener
     */
    void removeStateListener(StateListener listener);


    /**
     * 监听子节点变化
     * @param path
     * @param listener
     * @return
     */
    public List<String> subscribeChildChanges(String path, IZkChildListener listener);

    /**
     * 卸载子节点监听
     * @param path
     * @param childListener
     */
    public void unsubscribeChildChanges(String path, IZkChildListener childListener);

    /**
     * 得到孩子节点
     * @param parent
     * @return
     */
    public List<String> getChildren(String parent);

    /**
     * 是否连接
     * @return
     */
    boolean isConnected();

    /**
     * 关闭连接
     */
    void close();
}
